1. Technical Field
The present invention relates in general to data processing systems and performing floating-point operations and in more particular to a table-based system and method for computing floating-point division operations as well as to provide correctly rounded elementary functions. More specifically still, the present invention relates to a system and method for performing floating-point division that relies on an initial approximation for the reciprocal based on two related table values. The approximation is then further refined to a high degree of accuracy for long precision. The computation of correctly rounded elementary functions requires calculating a final result at a given accuracy and then checking whether that accuracy is sufficient for rounding purposes.
2. Description of the Related Art
Traditionally, floating-point division operations have included the computing of a quotient in a computer by first generating an estimate of the reciprocal of the divisor. The reciprocal is refined, in other words, the precision of the mantissa is increased, and eventually multiplied by the dividend to produce a quotient. This method has often been plagued with the problem of getting the last bit of the mantissa correct in all cases of division.
Computers that have used this technique in the past have been notorious for not always producing the expected results and these divisions were most disturbing for situations in which an exact quotient should be expected, but the hardware, using the sort of scheme described above, simply got the last bit wrong some of the time.
Computers that claim to support the IEEE floating-point standard must get the correct results in all cases.
Iterative techniques do not work well for floating-point processors with long pipeline delays. This is because the next iteration cannot be started before the previous iteration is complete.
Additionally, it is desirable and often required to compute some of the elementary functions, such as, for example, divide and square root with perfect accuracy. These computed results must be correctly rounded in the machine as though they were infinitely precise before rounding. For example, if the computational machine has nb bits of precision, then for the above elementary functions, this requires calculating the final result with approximately 2*nb bit accuracy. Typically, this may require many additional cycles beyond the cycles required to obtain nb bit accuracy.
Accordingly, what is needed is a method for performing divide operations in a reduced number of machine cycles than previously required. Additionally, what is needed is an early exit method for doing final rounding.